#ifndef _CONN_FUNC_H
#define _CONN_FUNC_H

// dodaj obsluge argList
#include "conn.h"
#include "connFunc.h"

/*******************************************/
/*           Funkcje obsługujące klienta   */
/*******************************************/

connFunc::connFunc() {
}

/*
 * Odsyła błąd
 */
void connFunc::say_error(QString errName) {
	qDebug(errName.toAscii());
}

/*
 * Przetwarzanie żądania
 */
void connFunc::getRequest(argList list, QString dataFile) {
	// sprawdz co chce klient...
	if (list.read("type") == "getinfo") {
		getInfo();
	} else if (list.read("type") == "sendscene") {
		getScene(list, dataFile);
	}
}

/*
 * Wysyła informacje o komputerze (narazie ustawione na stałe)
 */
void connFunc::getInfo() {
	argList resp;
	
	resp.set("type", "getinfo");
	resp.set("cpuc", QString("%1").arg(cpucV));
	resp.set("cpuf", QString("%1").arg(cpufV));
	resp.set("mem", QString("%1").arg(memV));
	resp.set("yafray", "1");
	resp.set("indigo", "0");
	resp.set("blender", "0");
	
	emit(sendResponse(resp, ""));
}

/*
 * Główna funkcja uruchamiająca raytracer'a
 */
void connFunc::getScene(argList list, QString dataFile) {
	// wybierz raytracer:
	if (list.read("raytracer") == "yafray") {
		yafray(list, dataFile);
	}
}

/*******************************************/
/*            Obsluga raytracerow          */
/*******************************************/

void connFunc::yafray(argList list, QString dataFile) {
	QString yafray_cmd = yafray_path;
	
	yafray_cmd += QString(" -r %1:%2:%3:%4").arg(list.read("x1")).arg(list.read("x2")).arg(list.read("y1")).arg(list.read("y2"));
	system(yafray_cmd.toAscii());
}

#endif

